1. 索引
a = 'ABCDEFGHIJK'
a1 = a[2] # C
a2 = a[-1] # K
2. 切片
- a[i:j:s] i: 起始位置的索引(从第几个开始截取) j: 结束位置的位数(截取的长度) s: 步长 -> 隔 s 个截取字符
- 当 i 缺省时,默认为 0,即 a[:3] 相当于 a[0:3]
- 当 j 缺省时,默认为 len(alist) 字符串的长度, 即 a[1:] 相当于 a[1:10]
- 当 s<0 时,i 缺省时,默认为 -1. j 缺省时,默认为 -len(a)-1 如果字符长度为 10 即 [::-1] 相当于 [-1:-11:-1] 或 [-1::-1] 就相当于倒叙
- 反向字符串
a = 'ABCDEFGHIJK'
a1 = a[-1:-len(a) - 1:-1] # KJIHGFEDCBA
a2 = a[::-1] # KJIHGFEDCBA
- 正向切片
a = 'ABCDEFGHIJK'
a1 = a[0:5] # ABCDE
a2 = a[1:-2] # BCDEFGHI
- 反向切片 list[s:e:b] -> s 和 e 都是从 0 开始从左边往右边数起 -> 通过步长进行方向切片 -> 将值倒着传最后再加上负的步长
# 方法一
a = 'ABCDEFGHIJK'
a1 = a[5:0:-1] # FEDCB
a2 = a[5::-1] # FEDCBA
a3 = a[8:3:-1] # IHGFE
- 步长
a = 'ABCDEFGHIJK'
a1 = a[::2] # ACEGIK
a2 = a[0:5:2] # ACE
- 反向步长
a = 'ABCDEFGHIJK'
a1 = a[::-2] # KIGECA
a2 = a[5:0:-2] # FDB
3. 字母大小写 首字母大写 大小写翻转 每个隔开(特殊字符或者数字)的单词首字母大写
- .capitalize() -> 首字母大写
- .upper() -> 全字母大写
- .lower() -> 全字母小写
- .swapcase() -> 大小写翻转
- .title() -> 每个隔开(特殊字符或者数字)的单词首字母大写
s = 'kEVin'
st = 'fade,crazy*w4rri0r_songsong node_3'
s1 = s.capitalize() # Kevin -> 首字母大写
s2 = s.upper() # KEVIN -> 全字母大写
s3 = s.lower()# kevin -> 全字母小写
s4 = s.swapcase() # KevIN -> 大小写翻转
s5 = st.title() # Fade,Crazy*W4Rri0R_Songsong Node_3 -> 每个隔开(特殊字符或者数字)的单词首字母大写
4. 居中/空白填充
- .center(字符串长度, 填充的字符串(默认为空)) -> 所填写的字符串长度一定要大于被应用字符串长度不然会没有效果
cs = 'Kevin'
c1 = cs.center(9) # ( Kevin ) -> 加括号为了看清空格
c2 = cs.center(9, '~') # (~~Kevin~~)
c3 = cs.center(10, '~') # (~~Kevin~~~)
5. \t 填充空格 -> 没啥用
- .expandtabs(空格数(默认不填8个空格)) -> 填充规则 -> 以 \t 为分割符 如果 \t 前面有3个字符,那么他只会填充 5 个空格
se = 'ale\tsir'
se1 = '\talesir'
s1 = se.expandtabs() # (ale xsir)
s2 = se1.expandtabs() # ( alexsir)
s3 = se.expandtabs(10) # (ale xsir)
6. 判断是否以什么开头/结尾
- .startswith('str', start, end) -> start(起始位置的索引) 和 end(结束位置的位数)就相当于切片截取出某一段进行判断
- .endswith('str', start, end) -> start(起始位置的索引) 和 end(结束位置的位数)就相当于切片截取出某一段进行判断
s = 'Kevin'
ss1 = s.startswith('v') # True
ss2 = s.startswith('v', 2, 4) # True
se1 = s.endswith('n') # True
se2 = s.endswith('i', 2, 4) # True
7. 通过元素查找索引 -> 相当于 js 中的 indexOf()
- .find('xx') -> 通过元素查找索引,找不到返回 -1
- .index('xx') -> 通过元素查找索引,找不到报错
s = 'Kevin'
sf1 = sc.find('i') # 3
sf2 = sc.find('a') # -1
si1 = sc.index('i') # 3
si2 = sc.index('a') # 找不到报错
8.清除两端空格/换行符/回车 或 所传入的字符 - 清除左边空格/换行符/回车 或 所传入的字符 - 清除右边空格/换行符/回车 或 所传入的字符
- strip('xxx(不传默认清除空格/换行符/回车)') -> 清除两端空格/换行符/回车 或 所传入的字符
- lstrip('xxx(不传默认清除空格/换行符/回车)') -> 清除左边空格/换行符/回车 或 所传入的字符
- rstrip('xxx(不传默认清除空格/换行符/回车)') -> 清除右边空格/换行符/回车 或 所传入的字符
s = ' 清除空格/换行符/回车 '
s1 = '~~ 清除所传入的字符 ~~'
s2 = 'ab123ba'
s3 = '(abc)'
sq1 = s.strip() # 清除空格/换行符/回车
sq2 = s1.strip('~') # ( 清除所传入的字符 ) -> 空格还在
sq3 = s2.strip('ab') # 清除两端的 a 和 b 的字母 -> 123
sq4 = s3.strip('()') # 清除两端的 ( 和 ) -> abc
sql1 = s.lstrip() # (清除空格/换行符/回车 ) -> 清除左边空格/换行符/回车
sql2 = s1.lstrip('~') # ( 清除所传入的字符 ~~) -> 清除左边所传入的字符 空格还在
sqr1 = s.rstrip() # ( 清除空格/换行符/回车) -> 清除右边空格/换行符/回车
sqr2 = s1.rstrip('~') # (~~ 清除所传入的字符 ) -> 清除右边所传入的字符 空格还在
9. 统计 xxx 在字符串中出现的次数
- .count('xxx', start, end) -> start(起始位置的索引) 和 end(结束位置的位数)就相当于切片截取出某一段进行统计
s = 'Kevin Kevin'
c1 = s.count('ev') # 2
c2 = s.count('ev', 1, 5) # 1
10. 字符串分割成列表
- .split('xxx(默认不传以空格分割)', num) -> 向左进行分割
- 第一个参数: 不传值以连续空格为一个整体分割,传了 ' ' 就以单个空格分隔
- 第二个参数: 分割num次,可以为空
s = ' Kevin Kevin'
sp1 = s.split() # ['Kevin', 'Kevin']
sp2 = s.split(' ') # ['', '', '', 'Kevin', '', '', '', 'Kevin']
sp3 = s.split('e') # [' K', 'vin K', 'vin']
s = 'Kevin_Aimer_Timmy_Jack'
sq = s.split('_') # ['Kevin', 'Aimer', 'Timmy', 'Jack'] -> 对所有 "_" 进行分割
sq1 = s.split('_', 1) # ['Kevin', 'Aimer_Timmy_Jack'] -> 只对前一个 "_" 进行分割
sq2 = s.split('_', 2) # ['Kevin', 'Aimer', 'Timmy_Jack'] -> 只对前两个 "_" 进行分割
sq3 = s.split('_', 3) # ['Kevin', 'Aimer', 'Timmy', 'Jack'] -> 只对前三个 "_" 进行分割
- .rsplit('xxx(默认不传以空格分割)', num) -> 向右进行分割
- 注意: .rsplit() 方法只有使用 num 参数才有意义,不然和 .split() 的效果是一样的
- 第一个参数: 不传值以连续空格为一个整体分割,传了 ' ' 就以单个空格分隔
- 第二个参数: 分割num次,可以为空
s = 'Kevin_Aimer_Timmy_Jack'
srq = s.rsplit('_') # ['Kevin', 'Aimer', 'Timmy', 'Jack'] -> 对所有 "_" 进行分割
srq1 = s.rsplit('_', 1) # ['Kevin_Aimer_Timmy', 'Jack'] -> 只对后面的一个 "_" 进行分割
srq2 = s.rsplit('_', 2) # ['Kevin_Aimer', 'Timmy', 'Jack'] -> 只对后面的两个 "_" 进行分割
srq3 = s.rsplit('_', 3) # ['Kevin', 'Aimer', 'Timmy', 'Jack'] -> 只对后面的三个 "_" 进行分割
11. 替换
- .replace('被替换的str','str', num) -> num 指定,则替换不超过 num 次,不传全部替换
s = '街坊 街坊 街坊'
sr1 = s.replace('街坊', '老王') # 老王 老王 老王
sr2 = s.replace('街坊', '老王', 2) # 老王 老王 街坊
12. is 系列
name='taibai123'
print(name.isalnum()) # 字符串是否由字母或数字组成
print(name.isalpha()) # 字符串是否只由字母组成
print(name.isdigit()) # 字符串是否只由数字组成
print(name.islower()) # 字符串是否只由小写组成
print(name.isupper()) # 字符串是否只由大写组成
print(name.isspace()) # 字符串是否只由空格组成
13. join
- 'xxx'.join(str)
sj = '一二三四'
s_j = '%'.join(sj) # 一%二%三%四